package com.facade;

import java.io.Serializable;
import java.util.List;

import com.dao.ContaReceberDao;
import com.model.ContaReceber;

public class ContaReceberFacade implements Serializable {
	private static final long serialVersionUID = 1L;
	
	private ContaReceberDao contaReceberDao = new ContaReceberDao();

	public void createContaReceber(ContaReceber contaReceber) {
		contaReceberDao.beginTransaction();		
		try {
			contaReceberDao.save(contaReceber);
			contaReceberDao.commit();
		} catch (Exception e) {
			contaReceberDao.rollback();
		} finally {
			contaReceberDao.closeTransaction();
		}
	}

//	public void updateContaReceber(ContaReceber contaReceber) {
//		contaReceberDao.beginTransaction();
//		ContaReceber persistedContaReceber = contaReceberDao.find(contaReceber.getId());
//		persistedContaReceber.setName(contaReceber.getName());
//		persistedContaReceber.setAge(contaReceber.getAge());
//		contaReceberDao.commitAndCloseTransaction();
//	}
	
	public void deleteContaReceber(ContaReceber contaReceber){
		contaReceberDao.beginTransaction();
		ContaReceber persistedContaReceberWithIdOnly = contaReceberDao.findReferenceOnly(contaReceber.getIdContaReceber());
		contaReceberDao.delete(persistedContaReceberWithIdOnly);
		contaReceberDao.commitAndCloseTransaction();
		
	}

	public ContaReceber findContaReceber(int contaReceberId) {
		contaReceberDao.beginTransaction();
		ContaReceber contaReceber = contaReceberDao.find(contaReceberId);
		contaReceberDao.closeTransaction();
		return contaReceber;
	}

	public List<ContaReceber> listAll() {
		contaReceberDao.beginTransaction();
		List<ContaReceber> result = contaReceberDao.findAll();
		contaReceberDao.closeTransaction();

		return result;
	}

//	public ContaReceber findContaReceberWithAllDogs(int contaReceberId) {
//		contaReceberDao.beginTransaction();
//		ContaReceber contaReceber = contaReceberDao.findContaReceberWithAllDogs(contaReceberId);
//		contaReceberDao.closeTransaction();
//		return contaReceber;
//	}
//
//	public void addDogToContaReceber(int dogId, int contaReceberId) {
//		contaReceberDao.beginTransaction();
//		dogDao.joinTransaction();
//		Dog dog = dogDao.find(dogId);
//		ContaReceber contaReceber = contaReceberDao.find(contaReceberId);
//		contaReceber.getDogs().add(dog);
//		dog.getContaReceber().add(contaReceber);
//		contaReceberDao.commitAndCloseTransaction();
//	}
//
//	public void removeDogFromContaReceber(int dogId, int contaReceberId) {
//		contaReceberDao.beginTransaction();
//		dogDao.joinTransaction();
//		Dog dog = dogDao.find(dogId);
//		ContaReceber contaReceber = contaReceberDao.find(contaReceberId);
//		contaReceber.getDogs().remove(dog);
//		dog.getContaReceber().remove(contaReceber);
//		contaReceberDao.commitAndCloseTransaction();
//	}
}